package cn.jbolt.ai.klb.service;


import com.baomidou.mybatisplus.extension.service.IService;
import cn.jbolt.ai.klb.entity.AiFile;
import cn.jbolt.ai.klb.vo.AiFileListAddVO;
import cn.jbolt.util.Result;

public interface AiFileService extends IService<AiFile> {

    /**
     * 根据ID获取文件信息
     *
     * @param id 文件ID
     * @return 文件信息
     */
    Result getFileById(Long id);

    /**
     * 获取所有文件信息
     *
     * @param page            分页页码
     * @param pageSize        分页大小
     * @param keywords        关键词
     * @param knowledgeBaseId 知识库ID
     * @param trainType       训练类型
     * @param status          状态
     * @return 文件列表
     */
    Result listByPage(Integer page, Integer pageSize, String keywords, Long knowledgeBaseId, String trainType,
                   Integer status);



    /**
     * 批量添加文件
     *
     * @param vo 文件对象列表
     * @return 是否添加成功
     */
    Result batchAdd(AiFileListAddVO vo);

    /**
     * 更新文件信息
     *
     * @param file 需要更新的文件对象
     * @return 是否更新成功
     */
    Result update(AiFile file);

    /**
     * 根据文件id更新文件状态
     * @param fileId
     * @param state
     */
     void updateState(Long fileId, Integer  state);
    /**
     * 删除文件
     *
     * @param id 文件ID
     * @return 是否删除成功
     */
    Result delete(Long id);


    /**
     * 获取文件类型的下拉选
     *
     * @return
     */
    Result getTypeList();

    /**
     * 获取训练的下拉选
     *
     * @return
     */
    Result getTrainList();

    /**
     * 根据知识库id移除file
     * @return
     */
     Result delFileByKlbId(Long klbId);

    /**
     * 重新训练
     * @param id
     * @return
     */
    Result reset(Long id);

    /**
     * 文件批量生成问题
     * @param modelSn
     * @param file
     * @return
     */
    Result batchAddQuestionByFile(String modelSn, AiFile file);
}

